# 正则
import re

from django.views import View
# 导入返回响应
from SaaSDevelTool.data_return_response import create_response
# 导入错误信息装饰器
from SaaSDevelTool.data_return_response import error_message_detection
# 导入数据库连接
from SaaSDevelTool.data_mysql_data import db
# 导入加密
from SaaSDevelTool.data_encode import md5_encrypt
# 导入解析用户信息函数
from SaaSDevelTool.data_user_func import user
# 获取当前时间
from SaaSDevelTool.data_datetime_func import get_datatime

"""添加用户"""


class SaaSDevelUserRbacCreate(View):
    @error_message_detection
    def post(self, request):
        """添加用户信息"""
        # 获取用户名称
        user_name = request.POST.get("user_name")
        # 获取用户手机号
        user_mobile = request.POST.get("user_mobile")
        # 获取用户组编号
        role_id = request.POST.get("role_id")

        # 判断参数是否传递完整
        if not all([user_name, user_mobile, role_id]):
            return create_response(code=400, msg="添加失败，用户名称与手机号，用户组为必传参数。")

        # 判断手机号格式
        if not re.findall(r"^1[3-9]\d{9}$", user_mobile):
            return create_response(code=400, msg="添加失败，手机号格式错误。")

        # 判断手机号是否已存在
        query_base_info_user_table_sql = """
            SELECT 
                user_name,
                user_mobile
            FROM 
                db_center_rbac.base_info_user_table 
            WHERE 
                user_mobile = '{}'
            ;""".format(user_mobile)
        # 获取到对应的值
        query_base_info_user_table_data = db.findOne(query_base_info_user_table_sql)

        # 如果手机号存在的情况下
        if query_base_info_user_table_data:
            return create_response(
                code=400, msg="添加失败，当前手机号已被【{}】注册。"
                .format("**" + query_base_info_user_table_data['user_name'][-1]))

        # 解析用户信息
        user_message = user.get_user(request)

        # 拼接sql语句进行添加
        create_base_info_user_table_sql = """
            INSERT INTO     
                db_center_rbac.base_info_user_table(
                    user_name, 
                    user_pwds, 
                    user_role_id, 
                    create_time, 
                    create_user, 
                    user_mobile
                    )
            VALUES
                ('{}','{}',{},'{}',{},'{}')
            ;""".format(user_name, md5_encrypt("000000"), role_id, get_datatime(), user_message['user_id'], user_mobile)
        # 执行添加语句
        db.update(create_base_info_user_table_sql)
        # 返回对应的数据
        return create_response(code=200, msg="添加成功！初始密码为【000000】")
